package com.zhihui.online.utils;


import com.zhihui.online.vo.MenuVO;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class MenuHelper {

    //构建树形结构
    public static List<MenuVO> bulidTree(List<MenuVO> menuList) {
        //创建集合封装最终数据
        List<MenuVO> trees = new ArrayList<>();
        //遍历所有菜单集合
        for (MenuVO menuVO:menuList) {
            //找到递归入口，parentid=0
            if(menuVO.getParentId() == 0) {
                trees.add(findChildren(menuVO,menuList));
            }
        }
        return trees;
    }

    //从根节点进行递归查询，查询子节点
    // 判断 id =  parentid是否相同，如果相同是子节点，进行数据封装
    private static MenuVO findChildren(MenuVO menuVO, List<MenuVO> treeNodes) {
        //数据初始化
        menuVO.setChildren(new ArrayList<MenuVO>());
        //遍历递归查找
        for (MenuVO it:treeNodes) {
            //获取当前菜单id
//            String id = menu.getId();
//            long cid = Long.parseLong(id);
            //获取所有菜单parentid
//            Long parentId = it.getParentId();
            //比对
            if(Objects.equals(menuVO.getId(), it.getParentId())) {
                if(menuVO.getChildren()==null) {
                    menuVO.setChildren(new ArrayList<>());
                }
                menuVO.getChildren().add(findChildren(it,treeNodes));
            }
        }
        return menuVO;
    }
}
